import type { HTMLInputTypeAttribute, LegacyRef } from 'react';
import type { ColorEnum, IconEnum } from '../common';

export type InputIconOptions = {
  /**
   * 名称
   */
  name?: IconEnum;
  /**
   * 位置
   */
  position?: 'left';
  /**
   * 颜色
   */
  color?: ColorEnum;
  /**
   * 圆圈
   */
  circular?: boolean;
  /**
   * 链接手势
   */
  link?: boolean;
  /**
   * 深色背景
   */
  inverted?: boolean;
};

export type InputLabeledOptions = {
  /**
   * 文本
   */
  content?: string;
  /**
   * 位置
   */
  position?: 'right';
  /**
   * 菜单
   */
  menu?: Array<string>;
  /**
   * 基本样式
   */
  basic?: boolean;
};

export interface InputOptions {
  /**
   * 输入框类型
   */
  type?: HTMLInputTypeAttribute;
  /**
   * 聚焦状态
   */
  focus?: boolean;
  /**
   * 禁用状态
   */
  disabled?: boolean;
  /**
   * 加载状态
   */
  loading?: boolean | 'double' | 'elastic';
  /**
   * 错误状态
   */
  state?: 'error' | 'success' | 'info' | 'warning';
  /**
   * 加载图标转动速度
   */
  speed?: 'fast' | 'slow';
  /**
   * 图标
   */
  icon?: boolean | InputIconOptions;
  /**
   * 标记
   */
  labeled?: string | InputLabeledOptions;
  /**
   * 转发 ref
   */
  forwardedRef?: LegacyRef<HTMLElement>;
}
